<template>
  <div class="row">
    <h1 v-show="loading">loading...</h1>

    <div v-show="!loading">
      <div class="card" v-for="user in users" :key="user.id">
        <a :href="user.html_url" target="_blank">
          <img :src="user.avatar_url" style="width: 100px" />
        </a>
        <p class="card-text">{{ user.login }}</p>
      </div>
    </div>
  </div>
</template>

<script>
import axios from "axios";

export default {
  name: "UserList",
  data() {
    return {
      loading: false,
      users: [],
    };
  },
  methods: {
    async search(keyword) {
      try {
        this.loading = true;

        const res = await axios.get("/api/search/users", {
          params: { q: keyword },
        });
        this.users = res.data.items;
      } catch (e) {
        console.log(e);
      } finally {
        // 不管请求成功或失败，都改为false
        this.loading = false;
      }
    },
  },
  mounted() {
    this.$bus.$on("search", this.search);
  },
  beforeDestroy() {
    this.$bus.$off("search", this.search);
  },
};
</script>

<style>
.album {
  min-height: 50rem; /* Can be removed; just added for demo purposes */
  padding-top: 3rem;
  padding-bottom: 3rem;
  background-color: #f7f7f7;
}

.card {
  float: left;
  width: 33.333%;
  padding: 0.75rem;
  margin-bottom: 2rem;
  border: 1px solid #efefef;
  text-align: center;
}

.card > img {
  margin-bottom: 0.75rem;
  border-radius: 100px;
}

.card-text {
  font-size: 85%;
}
</style>
